


//  接口

//  用来描述一段数据的类型

// {
//     name:"张三",
//     age:19,
//     sex:"男",
//     isMarried:false
// }

// interface Person {
//     name: string,
//     age: number,
//     sex: string,
//     isMarried: boolean
// }


// interface PersonData {
//     personList: Person[] // personList:Array<Person>
// }

// const personData: PersonData = {
//     personList: [
//         {
//             name: "张三",
//             age: 19,
//             sex: "男",
//             isMarried: false,
//             // addr:"河北省 石家庄市"
//         }
//     ]
// }

//  额外的属性检查
// interface MyObj {
//     name:string,
//     [propName:string] : any
// }


// const obj:MyObj = {
//     name:"李蒙",
//     age:20,
//     addr:"山西省 临汾市"
// }

//  可选属性
//  在属性名后面加上? 表示该属性是可选属性
// interface MyObj {
//     name:string,
//     age:number,
//     sex:string,
//     isMarried:boolean,
//     addr:string
// }

// const obj:MyObj = {
//     name:"李蒙",
//     age:20,
//     sex:"男",
//     isMarried:false,
//     addr:"山西省 运城市"
// };



// type Arr = Person[];

// let arr:Arr = [
//     {
//         name: "张三",
//         age: 19,
//         sex: "男",
//         isMarried: false,
//     }
// ];

//  可索引类型
// interface MyIndex {
//     [index:number]:number
// };


// let arr:MyIndex = [1,2,3];


//  只读属性
// interface Person {
//     // 只读属性使用readonly
//     readonly name:string,
//     age:number
// };

// let person:Person = {
//     name:"李蒙",
//     age:20
// };

// // person.name = "zhdsfgsd";
// person.age = 21;


//  函数

//  在ts中定义函数  声明参数的类型以及返回值的类型
//  void 表示没有返回值

// function add (a:number ,b:number ):boolean {
//     return (a+b) > 15 ? true : false;
// }


//  可选参数
//  设置可选参数时  不能把可选参数放在第一位
// function add (a:number , b?: number):void {
//     console.log(a)
// }

// add(1,2);
// add(1);


//  默认参数 
// function add (a:number , b = 123):void {
//     console.log(a,b)
// }


// add(1);
// add(1,2);

//  剩余参数

//  call bind apply
// function add ( a:number, ...rest:number[]) {
//     console.log(a,rest)
// }   

// add(1,2);
// add(1,2,3);

// add(1,2,3,4,5);



















